home *** CD-ROM | disk | FTP | other *** search
/ Clickx 115 / Clickx 115.iso / software / tools / windows / tails-i386-0.16.iso / live / filesystem.squashfs / usr / bin / pod2text < prev    next >
Encoding:
Text File  |  2012-12-11  |  8.9 KB  |  274 lines

  1. #!/usr/bin/perl
  2.     eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
  3.         if $running_under_some_shell;
  4.  
  5. # pod2text -- Convert POD data to formatted ASCII text.
  6. #
  7. # Copyright 1999, 2000, 2001, 2004, 2006, 2008 Russ Allbery <rra@stanford.edu>
  8. #
  9. # This program is free software; you may redistribute it and/or modify it
  10. # under the same terms as Perl itself.
  11. #
  12. # The driver script for Pod::Text, Pod::Text::Termcap, and Pod::Text::Color,
  13. # invoked by perldoc -t among other things.
  14.  
  15. require 5.004;
  16.  
  17. use Getopt::Long qw(GetOptions);
  18. use Pod::Text ();
  19. use Pod::Usage qw(pod2usage);
  20.  
  21. use strict;
  22.  
  23. # Silence -w warnings.
  24. use vars qw($running_under_some_shell);
  25.  
  26. # Take an initial pass through our options, looking for one of the form
  27. # -<number>.  We turn that into -w <number> for compatibility with the
  28. # original pod2text script.
  29. for (my $i = 0; $i < @ARGV; $i++) {
  30.     last if $ARGV[$i] =~ /^--$/;
  31.     if ($ARGV[$i] =~ /^-(\d+)$/) {
  32.         splice (@ARGV, $i++, 1, '-w', $1);
  33.     }
  34. }
  35.  
  36. # Insert -- into @ARGV before any single dash argument to hide it from
  37. # Getopt::Long; we want to interpret it as meaning stdin (which Pod::Simple
  38. # does correctly).
  39. my $stdin;
  40. @ARGV = map { $_ eq '-' && !$stdin++ ? ('--', $_) : $_ } @ARGV;
  41.  
  42. # Parse our options.  Use the same names as Pod::Text for simplicity, and
  43. # default to sentence boundaries turned off for compatibility.
  44. my %options;
  45. $options{sentence} = 0;
  46. Getopt::Long::config ('bundling');
  47. GetOptions (\%options, 'alt|a', 'code', 'color|c', 'help|h', 'indent|i=i',
  48.             'loose|l', 'margin|left-margin|m=i', 'overstrike|o',
  49.             'quotes|q=s', 'sentence|s', 'stderr', 'termcap|t', 'utf8|u',
  50.             'width|w=i')
  51.     or exit 1;
  52. pod2usage (1) if $options{help};
  53.  
  54. # Figure out what formatter we're going to use.  -c overrides -t.
  55. my $formatter = 'Pod::Text';
  56. if ($options{color}) {
  57.     $formatter = 'Pod::Text::Color';
  58.     eval { require Term::ANSIColor };
  59.     if ($@) { die "-c (--color) requires Term::ANSIColor be installed\n" }
  60.     require Pod::Text::Color;
  61. } elsif ($options{termcap}) {
  62.     $formatter = 'Pod::Text::Termcap';
  63.     require Pod::Text::Termcap;
  64. } elsif ($options{overstrike}) {
  65.     $formatter = 'Pod::Text::Overstrike';
  66.     require Pod::Text::Overstrike;
  67. }
  68. delete @options{'color', 'termcap', 'overstrike'};
  69.  
  70. # Initialize and run the formatter.
  71. my $parser = $formatter->new (%options);
  72. do {
  73.     my ($input, $output) = splice (@ARGV, 0, 2);
  74.     $parser->parse_from_file ($input, $output);
  75. } while (@ARGV);
  76.  
  77. __END__
  78.  
  79. =head1 NAME
  80.  
  81. pod2text - Convert POD data to formatted ASCII text
  82.  
  83. =for stopwords
  84. -aclostu --alt --stderr Allbery --overstrike overstrike --termcap --utf8
  85. UTF-8
  86.  
  87. =head1 SYNOPSIS
  88.  
  89. pod2text [B<-aclostu>] [B<--code>] [B<-i> I<indent>] S<[B<-q> I<quotes>]>
  90.     [B<--stderr>] S<[B<-w> I<width>]> [I<input> [I<output> ...]]
  91.  
  92. pod2text B<-h>
  93.  
  94. =head1 DESCRIPTION
  95.  
  96. B<pod2text> is a front-end for Pod::Text and its subclasses.  It uses them
  97. to generate formatted ASCII text from POD source.  It can optionally use
  98. either termcap sequences or ANSI color escape sequences to format the text.
  99.  
  100. I<input> is the file to read for POD source (the POD can be embedded in
  101. code).  If I<input> isn't given, it defaults to C<STDIN>.  I<output>, if
  102. given, is the file to which to write the formatted output.  If I<output>
  103. isn't given, the formatted output is written to C<STDOUT>.  Several POD
  104. files can be processed in the same B<pod2text> invocation (saving module
  105. load and compile times) by providing multiple pairs of I<input> and
  106. I<output> files on the command line.
  107.  
  108. =head1 OPTIONS
  109.  
  110. =over 4
  111.  
  112. =item B<-a>, B<--alt>
  113.  
  114. Use an alternate output format that, among other things, uses a different
  115. heading style and marks C<=item> entries with a colon in the left margin.
  116.  
  117. =item B<--code>
  118.  
  119. Include any non-POD text from the input file in the output as well.  Useful
  120. for viewing code documented with POD blocks with the POD rendered and the
  121. code left intact.
  122.  
  123. =item B<-c>, B<--color>
  124.  
  125. Format the output with ANSI color escape sequences.  Using this option
  126. requires that Term::ANSIColor be installed on your system.
  127.  
  128. =item B<-i> I<indent>, B<--indent=>I<indent>
  129.  
  130. Set the number of spaces to indent regular text, and the default indentation
  131. for C<=over> blocks.  Defaults to 4 spaces if this option isn't given.
  132.  
  133. =item B<-h>, B<--help>
  134.  
  135. Print out usage information and exit.
  136.  
  137. =item B<-l>, B<--loose>
  138.  
  139. Print a blank line after a C<=head1> heading.  Normally, no blank line is
  140. printed after C<=head1>, although one is still printed after C<=head2>,
  141. because this is the expected formatting for manual pages; if you're
  142. formatting arbitrary text documents, using this option is recommended.
  143.  
  144. =item B<-m> I<width>, B<--left-margin>=I<width>, B<--margin>=I<width>
  145.  
  146. The width of the left margin in spaces.  Defaults to 0.  This is the margin
  147. for all text, including headings, not the amount by which regular text is
  148. indented; for the latter, see B<-i> option.
  149.  
  150. =item B<-o>, B<--overstrike>
  151.  
  152. Format the output with overstrike printing.  Bold text is rendered as
  153. character, backspace, character.  Italics and file names are rendered as
  154. underscore, backspace, character.  Many pagers, such as B<less>, know how
  155. to convert this to bold or underlined text.
  156.  
  157. =item B<-q> I<quotes>, B<--quotes>=I<quotes>
  158.  
  159. Sets the quote marks used to surround CE<lt>> text to I<quotes>.  If
  160. I<quotes> is a single character, it is used as both the left and right
  161. quote; if I<quotes> is two characters, the first character is used as the
  162. left quote and the second as the right quoted; and if I<quotes> is four
  163. characters, the first two are used as the left quote and the second two as
  164. the right quote.
  165.  
  166. I<quotes> may also be set to the special value C<none>, in which case no
  167. quote marks are added around CE<lt>> text.
  168.  
  169. =item B<-s>, B<--sentence>
  170.  
  171. Assume each sentence ends with two spaces and try to preserve that spacing.
  172. Without this option, all consecutive whitespace in non-verbatim paragraphs
  173. is compressed into a single space.
  174.  
  175. =item B<--stderr>
  176.  
  177. By default, B<pod2text> puts any errors detected in the POD input in a POD
  178. ERRORS section in the output manual page.  If B<--stderr> is given, errors
  179. are sent to standard error instead and the POD ERRORS section is
  180. suppressed.
  181.  
  182. =item B<-t>, B<--termcap>
  183.  
  184. Try to determine the width of the screen and the bold and underline
  185. sequences for the terminal from termcap, and use that information in
  186. formatting the output.  Output will be wrapped at two columns less than the
  187. width of your terminal device.  Using this option requires that your system
  188. have a termcap file somewhere where Term::Cap can find it and requires that
  189. your system support termios.  With this option, the output of B<pod2text>
  190. will contain terminal control sequences for your current terminal type.
  191.  
  192. =item B<-u>, B<--utf8>
  193.  
  194. By default, B<pod2text> tries to use the same output encoding as its input
  195. encoding (to be backward-compatible with older versions).  This option
  196. says to instead force the output encoding to UTF-8.
  197.  
  198. Be aware that, when using this option, the input encoding of your POD
  199. source must be properly declared unless it is US-ASCII or Latin-1.  POD
  200. input without an C<=encoding> command will be assumed to be in Latin-1,
  201. and if it's actually in UTF-8, the output will be double-encoded.  See
  202. L<perlpod(1)> for more information on the C<=encoding> command.
  203.  
  204. =item B<-w>, B<--width=>I<width>, B<->I<width>
  205.  
  206. The column at which to wrap text on the right-hand side.  Defaults to 76,
  207. unless B<-t> is given, in which case it's two columns less than the width of
  208. your terminal device.
  209.  
  210. =back
  211.  
  212. =head1 DIAGNOSTICS
  213.  
  214. If B<pod2text> fails with errors, see L<Pod::Text> and L<Pod::Simple> for
  215. information about what those errors might mean.  Internally, it can also
  216. produce the following diagnostics:
  217.  
  218. =over 4
  219.  
  220. =item -c (--color) requires Term::ANSIColor be installed
  221.  
  222. (F) B<-c> or B<--color> were given, but Term::ANSIColor could not be
  223. loaded.
  224.  
  225. =item Unknown option: %s
  226.  
  227. (F) An unknown command line option was given.
  228.  
  229. =back
  230.  
  231. In addition, other L<Getopt::Long> error messages may result from invalid
  232. command-line options.
  233.  
  234. =head1 ENVIRONMENT
  235.  
  236. =over 4
  237.  
  238. =item COLUMNS
  239.  
  240. If B<-t> is given, B<pod2text> will take the current width of your screen
  241. from this environment variable, if available.  It overrides terminal width
  242. information in TERMCAP.
  243.  
  244. =item TERMCAP
  245.  
  246. If B<-t> is given, B<pod2text> will use the contents of this environment
  247. variable if available to determine the correct formatting sequences for your
  248. current terminal device.
  249.  
  250. =back
  251.  
  252. =head1 SEE ALSO
  253.  
  254. L<Pod::Text>, L<Pod::Text::Color>, L<Pod::Text::Overstrike>,
  255. L<Pod::Text::Termcap>, L<Pod::Simple>, L<perlpod(1)>
  256.  
  257. The current version of this script is always available from its web site at
  258. L<http://www.eyrie.org/~eagle/software/podlators/>.  It is also part of the
  259. Perl core distribution as of 5.6.0.
  260.  
  261. =head1 AUTHOR
  262.  
  263. Russ Allbery <rra@stanford.edu>.
  264.  
  265. =head1 COPYRIGHT AND LICENSE
  266.  
  267. Copyright 1999, 2000, 2001, 2004, 2006, 2008 Russ Allbery
  268. <rra@stanford.edu>.
  269.  
  270. This program is free software; you may redistribute it and/or modify it
  271. under the same terms as Perl itself.
  272.  
  273. =cut
  274.